-define(SUCCESS, 0).
-define(FAILURE, 1).
-define(RUNNING, 2).


-define(tree_key(Group), {btree, Group}).

-record(bn, {
    id :: node_id()
    , parent :: node_id()               % 父节点id
    , handler :: module()               % ai回调模块
    , props :: list()                   % 杂项键值对数据（长时间保留,可以由配表添加）
    , children :: [node_id()]           % 子节点id列表
    , status :: map()                   % 杂项状态（子节点处理完清空）
}).

-type bnode() :: #bn{}.
-type bresult() :: ?SUCCESS | ?FAILURE | ?RUNNING.
-type node_id() :: any().

-record(bt, {
    group :: node_id()
    , name :: atom()
    , entry :: node_id()
    , nodes :: map()                    % 子节点map #{node_id() => bnode()}
    , result :: bresult() | bnode()     % 节点执行返回结果 | 下一步节点
    , status :: map()                   % 杂项状态
}).

